#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
重新计算遗漏数据
在清理无效记录后，需要重新计算受影响彩种的遗漏数据
"""

import sys
import os

# 添加父目录到路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from calculate_omission_v2 import OmissionCalculatorV2

def recalculate_omission():
    print("=" * 100)
    print("重新计算遗漏数据")
    print("=" * 100)
    
    # 需要重新计算的彩种
    lottery_types = ['ssq', 'fc3d', 'qlc', 'kl8']
    lottery_names = {
        'ssq': '双色球',
        'fc3d': '福彩3D',
        'qlc': '七乐彩',
        'kl8': '快乐8'
    }
    
    calculator = OmissionCalculatorV2()
    calculator.connect()  # 连接数据库
    
    for lottery_type in lottery_types:
        name = lottery_names.get(lottery_type, lottery_type)
        print(f"\n{'=' * 100}")
        print(f"重新计算 {name} ({lottery_type}) 的遗漏数据...")
        print('=' * 100)
        
        try:
            calculator.calculate_lottery_omission(lottery_type)
            print(f"✅ {name} 遗漏数据计算完成")
        except Exception as e:
            print(f"❌ {name} 遗漏数据计算失败: {str(e)}")
            import traceback
            traceback.print_exc()
    
    # 关闭数据库连接
    if calculator.connection:
        calculator.connection.close()
    
    print(f"\n{'=' * 100}")
    print("✅ 所有遗漏数据重新计算完成！")
    print('=' * 100)

if __name__ == '__main__':
    print("\n⚠️  此操作将删除并重新计算以下彩种的所有遗漏数据：")
    print("  - 双色球 (ssq)")
    print("  - 福彩3D (fc3d)")
    print("  - 七乐彩 (qlc)")
    print("  - 快乐8 (kl8)")
    
    confirm = input("\n是否继续？(输入 YES 确认): ")
    
    if confirm != "YES":
        print("❌ 操作已取消")
        sys.exit(0)
    
    recalculate_omission()
    
    print("\n数据清理流程已全部完成！")
    print("建议：")
    print("  1. 检查API接口返回的数据是否正常")
    print("  2. 检查前端走势图页面显示是否正确")
    print("  3. 如有问题，可从备份文件恢复数据")

